package itheima.zuoye.Test1;

import cn.hutool.core.io.FileUtil;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class test {

    public static void main(String[] args) {
        // 源目录路径
        String sourceDirPath = "source_directory_path";
        // 目标目录路径
        String targetDirPath = "target_directory_path";

        // 创建源目录和目标目录的File对象
        File sourceDir = new File(sourceDirPath);
        File targetDir = new File(targetDirPath);

        // 如果目标目录不存在，则创建
        if (!targetDir.exists()) {
            targetDir.mkdirs();
        }

        // 调用方法进行文件拷贝和重命名
        copyAndRenameJavaFiles(sourceDir, targetDir);
    }

    /**
     * 拷贝并重命名.java文件
     *
     * @param sourceDir 源目录
     * @param targetDir 目标目录
     */
    public static void copyAndRenameJavaFiles(File sourceDir, File targetDir) {
        // 获取源目录下的所有文件
        File[] files = sourceDir.listFiles();

        if (files != null) {
            for (File file : files) {
                // 判断是否为文件
                if (file.isFile()) {
                    // 判断文件是否以.java结尾
                    if (file.getName().endsWith(".java")) {
                        // 拷贝文件
                        FileUtil
                                .copyFile(file, new File(targetDir, file.getName()));

                        // 拷贝成功后，改名
                        String newName = file.getName().replace(".java", ".txt");
                       FileUtil
                            .rename(new File(targetDir, file.getName()), newName, true);
                    }
                }
            }
        }
    }

    /**
     * 拷贝文件
     *
     * @param sourceFile 源文件
     * @param targetFile 目标文件
     */
    public static void copyFile(File sourceFile, File targetFile) {
        try (FileInputStream fis = new FileInputStream(sourceFile);
             FileOutputStream fos = new FileOutputStream(targetFile)) {

            byte[] buffer = new byte[1024];
            int length;

            while ((length = fis.read(buffer)) > 0) {
                fos.write(buffer, 0, length);
            }

            System.out.println("文件 " + sourceFile.getName() + " 拷贝成功！");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
